package com.youlai.boot.gym.service;

import com.youlai.boot.gym.model.entity.AccessLogs;
import com.youlai.boot.gym.model.form.AccessLogsForm;
import com.youlai.boot.gym.model.query.AccessLogsQuery;
import com.youlai.boot.gym.model.vo.AccessLogsVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.vo.VisitStatsVO;
import com.youlai.boot.system.model.vo.VisitTrendVO;

import java.time.LocalDate;

/**
 * 出入日志服务类
 *
 * @author hxc
 * @since 2025-06-01 12:37
 */
public interface AccessLogsService extends IService<AccessLogs> {

    /**
     *出入日志分页列表
     *
     * @return {@link IPage<AccessLogsVO>} 出入日志分页列表
     */
    IPage<AccessLogsVO> getAccessLogsPage(AccessLogsQuery queryParams);

    /**
     * 获取出入日志表单数据
     *
     * @param id 出入日志ID
     * @return 出入日志表单数据
     */
     AccessLogsForm getAccessLogsFormData(Long id);

    /**
     * 新增出入日志
     *
     * @param formData 出入日志表单对象
     * @return 是否新增成功
     */
    boolean saveAccessLogs(AccessLogsForm formData);

    /**
     * 修改出入日志
     *
     * @param id   出入日志ID
     * @param formData 出入日志表单对象
     * @return 是否修改成功
     */
    boolean updateAccessLogs(Long id, AccessLogsForm formData);

    /**
     * 删除出入日志
     *
     * @param ids 出入日志ID，多个以英文逗号(,)分割
     * @return 是否删除成功
     */
    boolean deleteAccessLogss(String ids);

    Integer getPeopleInGym();


    /**
     * 获取访问趋势
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return
     */
    VisitTrendVO getVisitTrend(LocalDate startDate, LocalDate endDate);

    /**
     * 获取访问统计
     */
    VisitStatsVO getVisitStats();

}
